package com.baidu.leetcode.search;

import com.google.common.collect.Lists;

import java.util.List;

/**
 * @author shilei
 * @create 2021-12-10 13:22
 * 线性查找算法演示
 */
public class SeqSearch {
    public static void main(String[] args) {
        int arr[] = {1, 9, 11, -1, 34, 89,11,34};
        int i = seqSearch(arr, 34);
        System.out.println(i);
        List<Integer> list = seqSearchList(arr, Lists.newArrayList(11,89));
        System.out.println(list);
    }

    /**
     * 这里我们实现的线性查找是找到一个满足条件的值 就返回
     * 如果找全部则遍历全部数据 相同数据放入集合中 返回集合
     *
     * @param arr
     * @param value
     * @return
     */
    public static int seqSearch(int[] arr, int value) {
        //线性查找是逐一比对 发现有相同值 就返回下标
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == value) {
                return i;
            }
        }
        return -1;
    }

    //如果找全部则遍历全部数据 相同数据放入集合中 返回集合
    public static List<Integer> seqSearchList(int[] arr, List<Integer> value) {
        //线性查找是逐一比对 发现有相同值 就返回下标
        List<Integer> list = Lists.newArrayList();
        for (int i = 0; i < arr.length; i++) {
            if (value.contains(arr[i])) {
                list.add(i);
            }
        }
        return list;
    }
}
